package com.itic.appbase.applications.imports;

import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Map;

import com.itic.appbase.framework.utils.StringHelper;
import com.itic.appbase.framework.utils.configuration.PropertyHelper;

/**
 * 导入工具类
 * <p>Company: itic</p>
 * 
 * @author: shijun
 * @date: 2015年5月8日 上午10:18:09
 * @version: V1.0
 */
public class ImportExcelUtil {
    /**
     * @param file 导入的文件
     * @param config 配置文件
     * @param formatter 日期类型格式化，默认为yyyy-MM-dd
     * @throws Exception
     * @return Map<String,Object> error:返回错误信息，data：List<?>
     */
    public static Map<String, Object> readValue(File file, String config)
            throws Exception {
        Map<String, Object> dataMap = null;
        InputStream is = null;
        // 判断文件是否存在
        if (file == null || !file.exists()) {
            throw new RuntimeException("文件不存在");
        } else {
            try {
                String classURL = PropertyHelper.getString(config + ".classURL");
                /** 字段 */
                String fieldsString = PropertyHelper.getString(config + ".fields");
                String[] fields = fieldsString.split(",");
                /** 字段类型 */
                String typesString = PropertyHelper.getString(config + ".types");
                String[] types = typesString.split(",");

                /** 读取数据发生错误，处理结果：continue：继续执行代码；break：停止执行代码 */
                String ignoreError = PropertyHelper.getString(config + ".ignoreError");
                /** 验证字段 */
                String validatorsString = PropertyHelper.getString(config + ".validators");
                String[] validators = validatorsString.split(";");
                /** 字符串空值转换，数字精度设定 */
                String formatsString = PropertyHelper.getString(config + ".formats");
                String[] formats = null;
                if(!StringHelper.isBlank(formatsString)){
                    formats = formatsString.split(";");
                }else{
                     formats = new String[0];
                }
                /** 读取数据排除隐藏的sheet表 */
                String hiddenSheetString = PropertyHelper.getString(config + ".fliterSheets");
                String[] hiddenSheets = hiddenSheetString.split(",");

                /** EXCEL读取数据的起始行与列 */
                String xy = PropertyHelper.getString(config + ".xy");
                int startRow = Integer.parseInt(xy.substring(0, xy.indexOf(",")));
                int startColumn = Integer.parseInt(xy.substring(xy.indexOf(",") + 1, xy.length()));

                is = new FileInputStream(file);
                ImportExcel importExcel = new ImportExcel();
                dataMap = importExcel.readExcel(is, classURL, ignoreError, fields, types, validators, formats,
                        startRow, startColumn, hiddenSheets);
                /** 关闭流 */
                is.close();
            } catch (Exception e) {
                throw new RuntimeException("导入有问题", e);
            } finally {
                if (is != null) {
                    is.close();
                }
            }
        }
        return dataMap;
    }
}
